﻿using System;
using System.Collections.Generic;
using System.Text;

using ECCIT;
using OgilvyOne.UKNow.Model;
using OgilvyOne.UKNow.Utility;

namespace OgilvyOne.UKNow.IDAL
{
    public interface VotesKeyWordsIDAL
    {
        #region 获取数据接口
        /// <summary>
        ///     根据关键字ID和关键字类型获取活动对象
        /// </summary>
        /// <param name="languageID">语言类型ID</param>
        /// <param name="id">关键字ID</param>
        /// <returns>如果存在，返回VotesKeyWordsModel，如果不存在，返回null</returns>
        VotesKeyWordsModel GetVotesKeyWordsModelByID(int? id);

        /// <summary>
        ///     获取关键字所有数据，默认根据最后修改时间倒排序
        /// </summary>
        /// <returns></returns>
        IList<VotesKeyWordsModel> GetAllVotesKeyWordsModels();

        /// <summary>
        ///     获取已发布的数据，默认根据最后修改时间倒排序
        /// </summary>
        /// <returns></returns>
        IList<VotesKeyWordsModel> GetPublishedVotesKeyWordsModels();

        #endregion


        #region 操作数据接口
        /// <summary>
        ///     保存数据
        /// </summary>
        /// <param name="modelInfo">关键字数据对象</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取保存是否成功
        ///     如果ResultInfo.Result为true，可以通过ResultInfo.ReturnedObject获取modelInfo
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Save(VotesKeyWordsModel modelInfo);


        /// <summary>
        ///     根据ID删除数据
        /// </summary>
        /// <param name="id">ID</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取删除是否成功
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Delete(IList<int?> idList);

        /// <summary>
        ///     根据id列表将关键字置为已发布状态
        /// </summary>
        /// <param name="idList">活动ID列表</param>
        /// <returns></returns>
        ResultInfo Publish(IList<int?> idList);

        /// <summary>
        ///     根据id列表将关键字置为未发布状态
        /// </summary>
        /// <param name="idList">活动ID列表</param>
        /// <returns></returns>
        ResultInfo UnPublish(IList<int?> idList);

        /// <summary>
        ///     根据id列表将票数+1
        /// </summary>
        /// <param name="idList">ID列表</param>
        /// <returns></returns>
        ResultInfo SetVotes(IList<int?> idList);
        IList<VotesKeyWordsModel> GetAllVotesKeyWordsModelsByName(string Keyname);
        IList<VotesKeyWordsModel> GetAllVotesKeyWordsModelsReleaseNsy();
        #endregion

    }
}
